Gentoo 更新 CPU 微码
Table of Contents
1. 确认内核特性是否开启
可以通过 /boot/config-<kernel-version>-gentoo 这个配置文件的内容来确认是否正确开启了内核特性以支持 CPU 微码更新:
$ cat /boot/config-5.15.88-gentoo | grep CONFIG_BLK_DEV_INITRD CONFIG_BLK_DEV_INITRD=y $ cat /boot/config-5.15.88-gentoo | grep CONFIG_MICROCODE CONFIG_MICROCODE=y CONFIG_MICROCODE_INTEL=y CONFIG_MICROCODE_AMD=y $ cat /boot/config-5.15.88-gentoo | grep CONFIG_MICROCODE_INTEL CONFIG_MICROCODE_INTEL=y
如果配置文件丢了,决定重新编译内核,那么注意把这些功能编译进内核:
General setup ---> [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support Processor type and features ---> [*] CPU microcode loading support [*] Intel microcode loading support [*] AMD microcode loading support
2. 针对包配置 USE flag ( 可选但推荐 )
编辑 /etc/portage/package.use/microcode 写入以下内容:
# for intel cpu microcode sys-firmware/intel-microcode initramfs # for amd cpu microcode sys-kernel/linux-firmware initramfs
给这两个包都配上 initramfs 这个 USE flag 后,在更新 CPU 微码时系统会自动生成 /boot/intel-uc.img 或者 /boot/amd-uc.img 并自动重新生成对应的 initramfs。
这样以后每次微码更新时只需要执行 grub-mkconfig -o /boot/grub/grub.cfg
更新一下 grub 配置即可。
可以通过命令查一下 grub.cfg 里面是否加载了存有微码的 initramfs 文件:
$ grep initrd /boot/grub/grub.cfg initrd /intel-uc.img /initramfs-5.15.88-gentoo.img initrd /intel-uc.img /initramfs-5.15.88-gentoo.img initrd /intel-uc.img /initramfs-5.15.88-gentoo.img # 要查看匹配到的行的前后内容可以用这条命令,显示的信息更多 $ grep -B 18 -A 1 initrd /boot/grub/grub.cfg
3. 更新微码
执行 grep microcode /proc/cpuinfo
可以查看当前使用的微码版本。
AMD CPU 的微码更新通常与 sys-kernel/linux-firmware 一起分发:
emerge --ask sys-kernel/linux-firmware
Intel CPU 的微码可以在 sys-firmware/intel-microcode 包中找到,需要单独安装:
emerge --ask sys-firmware/intel-microcode
如果针对这两个包都加了 initramfs 这个 USE flag,那么系统已经自动生成了 /boot/intel-uc.img 或者 /boot/amd-uc.img 并自动重新生成对应的 initramfs 了。
如果没有配置,那么推荐配置一下然后重新安装一下上面提到的两个包。
最后执行 grub-mkconfig -o /boot/grub/grub.cfg
更新一下 grub 配置就完成了。
但如果非得要手动安装微码的话,Intel CPU 照着这篇文档操作,AMD CPU 照着这篇文档操作。这两篇文档太长,而且上文已经给了解决方案了,就不在这翻译了。